package com.forekenow.Demo11;

import com.sun.org.apache.xerces.internal.xs.StringList;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 集合（容器）
 * Collection接口用来存放一组称为元素的对象，一个Collection中可以放不同类型的数据，它是Set接口和List接口的父接口。
 * 其中元素是否有特定的顺序以及是否允许重复，取决于它的实现类。
 * (1) 子接口Set：无序的集合，不允许重复。
 * Set接口的实现类：HashSet　
 * (2) 子接口List：有序的集合，允许重复。
 * List接口的实现类：ArrayList、LinkedList
 *
 * ArrayList中常用的方法
 * boolan add（E e）将指定的元素添加到此列表的尾部
 * E get（int index） 返回此列表中指定位置上的元素
 * int size() 返回此列表中的元素数
 * E remove（int index） 移除此列表中指定位置上的元素
 */
public class CollectionDemo {
    public void m1(List<Student> students){
        for (Student student:students){
            System.out.println(student.getId());
        }
    }
    public List<Student> m2(List<Student> students){
        return students;
    }
    public static void main(String[] args) {
        Student student = new Student();
        student.setId(1111);
        student.setAge(31);
        student.setName("tom");
        Student student1 = new Student();
        student1.setId(1112);
        student1.setAge(32);
        student1.setName("tom2");
        //创建一个容器
        //可以使用泛型<E>来约束集合中的元素类型
        List<Student> list = new ArrayList<>();
        //向集合中添加元素 注意集合中只能存对象（Object）
        list.add(student);
        list.add(student1);
        //从集合中获取元素（Student对象）
        Student s = list.get(0);
        Student s1 = list.get(1);
        System.out.println(s.getId());
        System.out.println(s1);
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            Student st = list.get(i);
            System.out.println(st.getId());
        }

        for (Student ss:list){
            System.out.println(ss.getId());
        }
//        CollectionDemo collectionDemo = new CollectionDemo();
//        collectionDemo.m1(list);
//        List<Student> list1 = collectionDemo.m2(list);
//        for (Student sss: list1) {
//                System.out.println(sss.getName());

        System.out.println("————————————————迭代器————————————————");
        //迭代器（Iterator）
        Iterator<Student> iterator = list.iterator();
        while (iterator.hasNext()){
            Student student2 = iterator.next();
            System.out.println(student2.getName());
        }

    }
}
